var now = new Date;
console.log("现在："+now);// Wed Jun 24 2015 19:49:22 GMT+0800 (CST)
console.log(now.getFullYear()); // 2015, 年份
console.log(now.getMonth()); // 5, 月份，注意月份范围是0~11，5表示六月
console.log(now.getDate()); // 24, 表示24号
console.log(now.getDay()); // 3, 表示星期三
console.log(now.getHours()); // 19, 24小时制
console.log(now.getMinutes()); // 49, 分钟
console.log(now.getSeconds()); // 22, 秒
console.log(now.getMilliseconds()); // 875, 毫秒数
console.log(now.getTime()); //时间戳


var xiaoming = {
    name: '小明',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp']
};

//var stringify = JSON.stringify(xiaoming);
var stringify = JSON.stringify(xiaoming,null,"  ");
console.log(stringify);

//第二个参数用于控制如何筛选对象的键值，如果我们只想输出指定的属性，可以传入Array：
stringify = JSON.stringify(xiaoming, ['name', 'skills'], '  ');
console.log(stringify);

//还可以传入一个函数，这样对象的每个键值对都会被函数先处理：
function convert(key, value) {
    //console.log(key);
    if (typeof value === 'string') {
        return value.toUpperCase();
    }
    return value;
}
stringify = JSON.stringify(xiaoming, convert, '  ');
console.log(stringify);

//如果我们还想要精确控制如何序列化小明，可以给xiaoming定义一个toJSON()的方法，直接返回JSON应该序列化的数据：
var xiaoming2 = {
    name: '小明2',
    age: 14,
    gender: true,
    height: 1.65,
    grade: null,
    'middle-school': '\"W3C\" Middle School',
    skills: ['JavaScript', 'Java', 'Python', 'Lisp'],
    toJSON:function(){
        return { // 只输出name和age，并且改变了key：
            'aaaName': this.name,
            'bbbAge': this.age
        };
    }
};
var stringify2 = JSON.stringify(xiaoming2,null," "); // '{"Name":"小明","Age":14}'
console.log(stringify2);

//反序列化 拿到一个JSON格式的字符串，我们直接用JSON.parse()把它变成一个JavaScript对象：
console.log(typeof stringify);
var parse = JSON.parse(stringify);
console.log(typeof parse);
console.log(parse);

JSON.parse('[1,2,3,true]'); // [1, 2, 3, true]
JSON.parse('{"name":"小明","age":14}'); // Object {name: '小明', age: 14}
JSON.parse('true'); // true
JSON.parse('123.45'); // 123.45

//JSON.parse()还可以接收一个函数，用来转换解析出的属性：

var parse2 = JSON.parse('{"name":"小明","age":14}', function (key, value) {
    if (key === 'name') {
        return value + '同学';
    }
    if (key === 'age') {
        return value * 2;
    }
    return value;
});
console.log(parse2);